import axios from "axios";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import getUserTempId from "./getUserTempId";
import store from "@/store";

const request = axios.create({
  baseURL: "/api",
  timeout: 20000,
});

// 请求拦截器
request.interceptors.request.use(
  // 成功的回调函数
  (config) => {
    // config请求的配置对象
    NProgress.start();
    // 给config添加公共参数（动态的）
    config.headers.userTempId = getUserTempId();
    // this.$store.state.xxx
    const token = store.state.user.token;
    if (token) {
      config.headers.token = token;
    }

    return config;
  }
  // 失败的回调函数
  // () => {}
);
// 响应拦截器
request.interceptors.response.use(
  // 成功的回调函数
  (response) => {
    // 请求成功 2xx
    NProgress.done();
    // 功能可能是失败
    if (response.data.code === 200) {
      // 功能成功
      return response.data.data;
    } else {
      // 功能失败
      return Promise.reject(response.data.message || "未知错误，请联系网管");
    }
  },
  // 失败的回调函数
  (error) => {
    NProgress.done();
    console.dir(error);
    // 请求失败
    return Promise.reject(error.message);
  }
);

export default request;
